package com.example.topicfromjinzhuan2024national

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Toast
import com.example.topicfromjinzhuan2024national.databinding.ActivityTrafficLightManageBinding

class TrafficLightManage : AppCompatActivity() {
    private lateinit var runnableRed:Runnable
    private lateinit var runnableYellow:Runnable
    private lateinit var runnableGreen:Runnable
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        var binding=ActivityTrafficLightManageBinding.inflate(layoutInflater)
        setContentView(binding.root)

        var handler= Handler(Looper.getMainLooper())
        var currentIndex=0
        var RedImgList= listOf<Int>(R.drawable.red_light,R.drawable.red_unselect,R.drawable.red_unselect)
        runnableRed=Runnable{
            currentIndex=(currentIndex+1)%RedImgList.size
            binding.imgRedLight.setImageResource(RedImgList[currentIndex])
            handler.postDelayed(runnableRed,3000)
        }
        handler.postDelayed(runnableRed,3000)

        var YellowImgList= listOf<Int>(R.drawable.yellow_unselect,R.drawable.yellow_light,R.drawable.yellow_unselect)
        runnableYellow=Runnable{
            currentIndex=currentIndex%YellowImgList.size
            binding.imgYellowLight.setImageResource(YellowImgList[currentIndex])
            handler.postDelayed(runnableYellow,3000)
        }
        handler.postDelayed(runnableYellow,3000)

        var GreenImgList= listOf<Int>(R.drawable.green_unselect,R.drawable.green_unselect,R.drawable.green_light)
        runnableGreen=Runnable{
            currentIndex=currentIndex%GreenImgList.size
            binding.imgGreenLight.setImageResource(GreenImgList[currentIndex])
            handler.postDelayed(runnableGreen,3000)
        }
        handler.postDelayed(runnableGreen,3000)

        var spinnerList= listOf<String>("路口升序","路口降序","红灯升序","红灯降序")
        //ArrayAdapter 是一个常用的适配器类，用于将数组或列表的数据源转换为 ListView、Spinner 等视图可以显示的格式。
        //R.layout.support_simple_spinner_dropdown_item是Android系统内置的布局方式
        var spinnerAdapter=ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,spinnerList)
        binding.spinner.adapter=spinnerAdapter

        //这里的 = object : AdapterView.OnItemSelectedListener {} 是在 Kotlin 中使用对象表达式（Object Expression）来创建一个匿名类的实例，这个匿名类实现了 AdapterView.OnItemSelectedListener 接口。
        //对象表达式‌：在 Kotlin 中，对象表达式是一种创建对象的方式，它允许你定义一个类并立即创建其实例，而不需要显式地声明一个单独的类。对象表达式特别适用于创建只需要一次使用的对象，如监听器、回调等。
        //实现接口‌：在这个例子中，AdapterView.OnItemSelectedListener 是一个接口，它定义了两个方法：onItemSelected 和 onNothingSelected。通过 object : AdapterView.OnItemSelectedListener {}，你创建了一个匿名类，这个类实现了这个接口，并提供了这两个方法的实现（尽管在这个简化的例子中，方法体还是空的）。
        //赋值给属性‌：spinner.onItemSelectedListener 是 Spinner 对象的一个属性，它用于存储一个实现了 AdapterView.OnItemSelectedListener 接口的对象的引用。通过将匿名类的实例赋值给这个属性，你设置了 Spinner 的项选择监听器。
        binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
            // p0是 Spinner 本身 ;p1是被选择的项视图（通常是一个 TextView） ;p2是被选择项的索引（从 0 开始） ;p3是被选择项的行 ID（通常不常用）
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                var str=binding.spinner.getItemAtPosition(p2).toString()
                Toast.makeText(applicationContext, str, Toast.LENGTH_SHORT).show()
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {

            }

        }
    }
}